% File src/library/base/man/all.Rd
% Part of the R package, http://www.R-project.org
% Copyright 1995-2007 R Core Development Team
% Distributed under GPL 2 or later

\name{all}
\title{Are All Values True?}
\usage{
all(\dots, na.rm = FALSE)
}
\alias{all}
\description{
  Given a set of logical vectors, are all of the values true?
}
\arguments{
  \item{\dots}{zero or more logical vectors.  Other objects of zero
    length are ignored, and the rest are coerced to logical ignoring
    any class.}
  \item{na.rm}{logical.  If true \code{NA} values are removed before
    the result is computed.}
}
\details{
  This is a generic function: methods can be defined for it
  directly or via the \code{\link[=S3groupGeneric]{Summary}} group generic.
  For this to work properly, the arguments \code{\dots} should be
  unnamed, and dispatch is on the first argument.

  Coercion of types other than integer (raw, double, complex, character,
  list) gives a warning as this is often unintentional.
}
\value{
  The value is a logical vector of length one.
  
  Let \code{x} denote the concatenation of all the logical vectors in
  \code{...} (after coercion), after removing \code{NA}s if requested by
  \code{na.rm = TRUE}.
  
  The value returned is \code{TRUE} if all of the values in \code{x} are
  \code{TRUE} (including if there are no values), and \code{FALSE} if at
  least one of the values in \code{x} is \code{FALSE}.  Otherwise the
  value is \code{NA} (which can only occur if \code{na.rm = FALSE} and
  \code{\dots} contains no \code{FALSE} values and at least one
  \code{NA} value).
}
\note{
  That \code{all(logical(0))} is true is a useful convention:
  it ensures that
  \preformatted{
  all(all(x), all(y)) == all(x,y)
  }
  even if \code{x} has length zero.
}
\section{S4 methods}{
  This is part of the S4 \code{\link[=S4groupGeneric]{Summary}}
  group generic.  Methods for it must use the signature
  \code{x, \dots, na.rm}.
}
\references{
  Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
  \emph{The New S Language}.
  Wadsworth & Brooks/Cole.
}
\seealso{
  \code{\link{any}}, the \sQuote{complement} of \code{all}, and
  \code{\link{stopifnot}(*)} which is an \code{all(*)}
  \sQuote{insurance}.
}
\examples{
range(x <- sort(round(stats::rnorm(10) - 1.2, 1)))
if(all(x < 0)) cat("all x values are negative\n")

all(logical(0))  # true, as all zero of the elements are true.
}
\keyword{logic}
